package com.lxd.milktea.service;

import com.lxd.milktea.VO.MaterialVO;
import com.lxd.milktea.dataobject.ProductInfo;
import com.lxd.milktea.dataobject.ProductRe;
import com.lxd.milktea.dto.CartDTO;
import com.lxd.milktea.form.MaterialRe;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;

/**
 * @author carrymaniac
 */
public interface ProductService {
    ProductInfo findOne(String productId);

    /**
     * 查询所有上架的商品列表
     * @return
     */
    List<ProductInfo> findUpAll();

    /**
     * 查询所有商品(分页版本)
     * @param pageable
     * @return
     */
    Page<ProductInfo> findAll(Pageable pageable);

    /**
     *
     * @param productInfo
     * @return
     */
    ProductInfo save(ProductInfo productInfo);


    void increaseStock(List<CartDTO> cartDTOS);

    void decreaseStock(List<CartDTO> cartDTOS);

    ProductInfo onSale(String productId);

    /**
     * 下架
     * @param productId
     * @return
     */
    ProductInfo OffSale(String productId);

    /**
     * 解析产品所需要的原料
     * @param productId
     * @return
     */
    List<MaterialVO> getProductForm(String productId);
    /**
     * 保存产品原料信息
     */
    List<ProductRe> saveProductRe(String productId, List<MaterialRe> list);

    /**
     * 删除产品原料信息
     */
    void deleteProductRe(String productId);
    /**
     * 查看产品的原料信息
     */
    List<ProductRe> findProductRe(String productId);

}
